package com.asset.dispoal.dataDetail.service;

import com.asset.dispoal.dataDetail.api.SysDataTypeService;
import com.asset.dispoal.dataDetail.dto.SysDataDetailGeneratorRequest;
import com.asset.dispoal.dataDetail.dto.SysDataDetailTemplateResponse;
import com.asset.dispoal.dataDetail.dto.SysDataType;
import com.asset.dispoal.dataDetail.dto.SysDataTypeDetailTemplate;
import com.asset.dispoal.dataDetail.dto.SysDataTypePage;
import com.asset.dispoal.dataDetail.dto.SysDataTypeSaveRequest;
import com.asset.dispoal.dataDetail.service.commom.SysDataTypeDeleteCommand;
import com.asset.dispoal.dataDetail.service.commom.SysDataTypeGeneratorCommand;
import com.asset.dispoal.dataDetail.service.commom.SysDataTypePageCommand;
import com.asset.dispoal.dataDetail.service.commom.SysDataTypeQueryCommand;
import com.asset.dispoal.dataDetail.service.commom.SysDataTypeQueryTemplateByAssetInstBatchIdCommand;
import com.asset.dispoal.dataDetail.service.commom.SysDataTypeQueryTemplateByIdCommand;
import com.asset.dispoal.dataDetail.service.commom.SysDataTypeQueryTemplateCommand;
import com.asset.dispoal.dataDetail.service.commom.SysDataTypeSaveCommand;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import tech.mhuang.pacebox.springboot.protocol.Result;
import tech.mhuang.pacebox.springboot.protocol.data.PageVO;

import java.util.List;

@Service
public class SysDataTypeServiceImpl implements SysDataTypeService {

    @Autowired
    private SysDataTypeQueryCommand queryCommand;

    @Autowired
    private SysDataTypeGeneratorCommand generatorCommand;

    @Autowired
    private SysDataTypePageCommand pageCommand;

    @Autowired
    private SysDataTypeSaveCommand saveCommand;

    @Autowired
    private SysDataTypeDeleteCommand deleteCommand;
    @Autowired
    private SysDataTypeQueryTemplateCommand queryTemplateCommand;
    @Autowired
    private SysDataTypeQueryTemplateByIdCommand queryTemplateByIdCommand;
    @Autowired
    private SysDataTypeQueryTemplateByAssetInstBatchIdCommand queryTemplateByAssetInstBatchIdCommand;

    @Override
    public Result<PageVO<SysDataTypePage>> queryPage(SysDataTypePage page) {
        return pageCommand.execute(page);
    }

    @Override
    public Result save(SysDataTypeSaveRequest request) {
        return saveCommand.execute(request);
    }

    @Override
    public Result delete(String id) {
        return deleteCommand.execute(id);
    }

    @Override
    public List<SysDataDetailTemplateResponse> queryTemplateList() {
        return queryTemplateCommand.execute();
    }

    @Override
    public List<SysDataTypeDetailTemplate> queryTemplateListById(String id) {
        return queryTemplateByIdCommand.execute(id);
    }

    @Override
    public List<SysDataType> queryTypeList() {
        return queryCommand.execute();
    }

    @Override
    public Integer generator(SysDataDetailGeneratorRequest request) {
        return generatorCommand.execute(request);
    }

    @Override
    public List<SysDataTypeDetailTemplate> queryDataDetailByAssetInstBatchId(String assetInstBatchId) {
        return queryTemplateByAssetInstBatchIdCommand.execute(assetInstBatchId);
    }
}
